package com.basic.tool.domain;

import java.util.Date;

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.format.DateTimeFormat;
import com.basic.common.annotation.EnumFiledConvert;
import com.basic.common.utils.easyExcel.ExcelEnumConvert;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.basic.common.core.domain.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import com.basic.common.utils.StringUtils;
import com.basic.common.utils.uuid.ULID;

/**
 * 下载中心对象 sys_download_center
 * 
 * @author zhaoxy_jn@163.com
 * @date 2024-07-04
 */
@Getter
@Setter
@ExcelIgnoreUnannotated
public class SysDownloadCenter extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private String id;

    /** 文件名称 */
    @ExcelProperty(value = "文件名称")
    private String fileName;

    /** 文件类型 -1未知 1excel 2word 3ppt 4pdf 5txt */
    @ExcelProperty(value = "文件类型 ")
    private String fileType;

    /** 文件路径 */
    @ExcelProperty(value = "文件路径")
    private String fileUrl;

    /** 生成开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "生成开始时间")
    private Date buildStartTime;

    /** 生成结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "生成结束时间")
    private Date buildEndTime;

    /** 下载时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "下载时间")
    private Date downloadTime;

    /** 文件大小 KB */
    @ExcelProperty(value = "文件大小 字节")
    private Long fileSize;

    /** 文件MD5值 */
    @ExcelProperty(value = "文件MD5值")
    private String fileMd5;

    /** 状态 -1文件生成失败 0正在处理 1数据处理完成 2已下载 3已上传 */
    @ExcelProperty(value = "状态", converter = ExcelEnumConvert.class)
    @EnumFiledConvert(enumMap = "-1=生成失败,0=正在处理,1=处理完成,2=已下载,3=已上传")
    private String fileStatus;

    public void setId(String id) {
        this.id = StringUtils.isNotEmpty(id) ? id : ULID.getId();
    }

    public SysDownloadCenter (){
        this.id = StringUtils.isNotEmpty(id) ? id : ULID.getId();
    }

}
